

#ifndef FILE_HASH_H
#define FILE_HASH_H

#include"logger.h"
#include <stddef.h> // 包含 size_t 的定义

// 定义 SHA-256 哈希值十六进制字符串所需的长度
// 32 字节 * 2 (每个字节2个十六进制字符) + 1 (字符串结束符 '\0')
#define SHA256_HEX_LENGTH 65 

/**
 * @brief 计算文件的 SHA-256 哈希值
 *
 * 该函数读取指定文件的内容，并计算其 SHA-256 哈希值。
 * 结果以十六进制字符串的形式存储在输出缓冲区中。
 * * @param filepath 要计算哈希值的文件路径 (输入)。
 * @param hex_hash_out 用于存储结果（十六进制字符串）的缓冲区 (输出)。
 * 调用者必须确保这个缓冲区的大小至少为 SHA256_HEX_LENGTH (65 字节)。
 * @return 0 表示成功计算哈希值。
 * -1 表示发生错误 (例如，文件无法打开, 读取错误, OpenSSL 错误等)。
 * 具体的错误信息会打印到 stderr。
 */
int calculate_file_sha256(const char *filepath, char *hex_hash_out);

#endif // FILE_HASH_H
